Results 1 to 10 of 4110
Thread: Qidi Tech 1 - Replicator 1 clone
Hybrid View
-
07-03-2016, 12:28 AM #1
Ok, so not that I'd need to but I can confirm what DA is saying, with the Qidi it's all or nothing no matter what you try for the cooling fan.
I've been doing some digging on the matter and it seems we need two things for it to work. A compatible Sailfish and it seems we're running the unreleased beta (well alpha really) version of it. The last update of which was 8 days ago. But digging through the code on GitHub (though not too extensively, I've only had an hours sleep) it seems we should have PWM control regardless of which 7.8 alpha Qidi has chosen to use. Although there should be an option available on the LCD in the utility's for the cooling fan as well and we're missing that, so I don't know what Qidi is up to.
So other than that the only other possible suspects I can think of is that we're missing the FET on the motherboard to regulate the speed.
I can't rip my printer apart until the wife gets out of bed to go to her work but I'm going to have a look when she does.
Or Qidi have removed the option in the firmware, in which case flashing the latest 7.8 should rectify the matter.
I've reached out to Qidi for clarification to find out which alpha they have used and just what they have to say about the lack of speed control. Though I doubt there will be a reply on a Sunday.
Ohhhhh, I do enjoy a mystery, ha.
-
07-03-2016, 12:53 AM #2
- Join Date
- Aug 2014
- Posts
- 627
Emily is there on a Sunday but she will say she has to ask the "engineer" who has about as much brain power as does some moss on a dead log.
I firmly believe that a lot of the functionality in SF was removed by them because their product lacks a lot of things and/or they are too afraid of allowing the masses to have that much control but a lack of fan speed control takes the cake. Unless there is a missing FET (I think you will see there isn't unless I skipped over it though at the time I wasn't concerned about this) then they borked the code with their dodgy programming skills. It has already been shown, numerous times, they do NOT know wth they are doing and are just playing it by ear.
edit: This is not that easy to look through as Marlin but here is for the fan -
#if defined(COOLING_FAN_PWM)
if ( fan_pwm_enable ) {
// fan_pwm_counter is uint8_t
// we expect it to wrap such that 255 + 1 ==> 0
if ( ++fan_pwm_counter == 0 )
fan_pwm_counter = 256 - (1 << FAN_PWM_BITS);
EX_FAN.setValue(fan_pwm_counter <= fan_pwm_bottom_count);
}
#endif
I may have found the issue -#if defined(COOLING_FAN_PWM)
void Motherboard::setExtra(bool on) {
uint16_t fan_pwm; // Will be multiplying 8 bits by 100(decimal)
// Disable any fan PWM handling in Timer 5
fan_pwm_enable = false;
if ( !on ) {
EXTRA_FET.setValue(false);
return;
}
// See what the PWM setting is -- may have been changed
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
fan_pwm = (uint16_t)eeprom::getEeprom8(eeprom_offsets::COOLI NG_FAN_DUTY_CYCLE,
COOLING_FAN_DUTY_CYCLE_DEFAULT);
}
// Don't bother with PWM handling if the PWM is >= 100
// Just turn the fan on full tilt
if ( fan_pwm >= 100 ) {
EXTRA_FET.setValue(true);
return;
}
// Fan is to be turned on AND we are doing PWM
// We start the bottom count at 255 - 64 and then wrap
fan_pwm_enable = true;
fan_pwm_bottom_count = (255 - (1 << FAN_PWM_BITS)) +
(int)(0.5 + ((uint16_t)(1 << FAN_PWM_BITS) * fan_pwm) / 100.0);
}// See what the PWM setting is -- may have been changed
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
fan_pwm = (uint16_t)eeprom::getEeprom8(eeprom_offsets::COOLI NG_FAN_DUTY_CYCLE,
COOLING_FAN_DUTY_CYCLE_DEFAULT);
}Last edited by DarkAlchemist; 07-03-2016 at 01:20 AM.
-
07-03-2016, 01:19 AM #3
-
07-03-2016, 01:30 AM #4
- Join Date
- Aug 2014
- Posts
- 627
See my edits above.
After reading the docs on SF 7.7 it seems we can write, and read, the eeprom to and from the SD card so if we knew where these two bytes were we could check the number that is there via a hex editor and if >= 100 we could change it.
What we are after, and probably change, is eeprom_offsets::COOLI NG_FAN_DUTY_CYCLE
edit: Lookee what I found (btw, this is the first time I ever downloaded, or saw, SF code so this is a learning experience compared to Marlin).
//Fan PWM level (0 - 100)
//$BEGIN_ENTRY
//$type:B $constraints:l,0,100 $tooltip:Set a blower strength (duty cycle) to use for the print cooling fan when it is activated by the print commands. Select a value between 0% (off) and 100% (on full). For example, if your fan is too strong, you may want to set this value to 50 so that the fan operates at 50% strength. If set this value to 0, then the cooling fan will not activate at all when the print commands request it to.
const static uint16_t COOLING_FAN_DUTY_CYCLE = 0x0F63;
#define COOLING_FAN_DUTY_CYCLE_DEFAULT 100
Yep, looking at this eeprom file everything is where it should be and what is there but a ton of 0xFF AND right at 0x0F63 is 0x64 which is 100 in decimal. So, PWM is never used.
Thing is if COOLING_FAN_PWM is not defined when compiled then the fan will always be full force and it will take a recompile and an upload to get rid of their 7.8 to get the fan PWM back.
Ahhh, crud I think I am chasing a red herring because in the Menu.cc there is this#if defined(COOLING_FAN_PWM)
CoolingFanPwmScreen coolingFanPwmScreen;
#endifLast edited by DarkAlchemist; 07-03-2016 at 02:38 AM.
Please explain to me how to...
05-17-2024, 12:15 PM in 3D Printer Parts, Filament & Materials