My Neptune Apex web interface compatible DIY reef controller

DCT.



Can you read what motor controller chip they used on the CP-40 and DCT controler?



They have a glaze over it to hide the text but I'll see if there is any hope next time I pop it back open



Piggybacking off the buttons is actually an excellent way to do it. I hacked that cheap auto feeder that way and essentially had a really to quickly push the button
 
Apologies if this question has already been asked.
I'm looking at the schematic and can see the ATO1 and ATO2 connections to the Arduino. What I can't see is the schematic for the float switches. What I would like to understand is whether pull-up or pull-down resistors are used as I can't see the code for using the internal pull-up circuitry.
Can anyone help?

Thanks
 
Apologies if this question has already been asked.
I'm looking at the schematic and can see the ATO1 and ATO2 connections to the Arduino. What I can't see is the schematic for the float switches. What I would like to understand is whether pull-up or pull-down resistors are used as I can't see the code for using the internal pull-up circuitry.
Can anyone help?

Thanks

code in interruptsio.ino

Code:
void initATO(){
  //ATO1 PK3 PCINT19
  //ATO2 PK4 PCINT20
  DDRK &= ~(_BV(PK3)|_BV(PK4)); //inputs
  PORTK |= (_BV(PK3) | _BV(PK4)); //pullups
}

----------------
Go Sharks!
Go Warriors!
 
code in interruptsio.ino

Code:
void initATO(){
  //ATO1 PK3 PCINT19
  //ATO2 PK4 PCINT20
  DDRK &= ~(_BV(PK3)|_BV(PK4)); //inputs
  PORTK |= (_BV(PK3) | _BV(PK4)); //pullups
}

----------------
Go Sharks!
Go Warriors!


Thanks for highlighting code. So I am assuming you are using the pullups within the Arduino. In other words you are not using external resistors to perform this? Can you please confirm?
 
Thanks for highlighting code. So I am assuming you are using the pullups within the Arduino. In other words you are not using external resistors to perform this? Can you please confirm?

yes, that is correct. so you connect the ATO wire to the arduino pin and the other to ground.


----------------
Go Sharks!
Go Warriors!
 
I just ordered a DCT 4000 pump to replace my good old eheim. Mainly for less power consumption , less noise and controlability.

Hopefully, I will know how to control the pump once and for all, and find out how/why it worked supplying 24V-GND-5v PWM directly to the 3 pins instead of 3 phase 24 volt pulses to the W V U pins.

If both the DCT pump and the cross flow use 24v 3 phase motors, so in theory, you can hook up the DCT pump to the cross flow controller and run it in reverse right?


----------------
Go Sharks!
Go Warriors!
 
The DCT pumps DO ramp up on start. The run dry feature is in the pump. To reset it if it runs dry you have to unplug the pump from the controller for a few seconds and then connect it back up.


The pump can detect if it stops spinning or if runs dry.
I can see how it detects that it stopped spinning.
Anyone knows how the pump detects it is running dry?

just curious because I saw an ad for a different brand DC pump that cannot do this, so it provides a float switch that you install and will stop the pump if water falls below a certain level. I think that is kind of awkward.

----------------
Go Sharks!
Go Warriors!
 
I would assume that the impedance of the coils change if they're turning without resistance? You can compare the amplitude and phase of the voltage and current.

Or, they may just have a temperature sensor.. Run dry gets hotter faster?
 
I would assume that the impedance of the coils change if they're turning without resistance? You can compare the amplitude and phase of the voltage and current.

Or, they may just have a temperature sensor.. Run dry gets hotter faster?



Torque required would dramatically decrease, so that's one way.

All of these pumps seem to run without any feedback mechanism, so they have no idea how fast the impeller is actually spinning.
 
They don't have a feedback line, but they do respond to shaft rotation.

For example, when the pump is stuck, the controller will reverse direction for a turn (assume it's trying to release the blockage) and then turn forward again.

It will try this several times before giving up and going into "warning" state where all the lights blink and the pump is turned off.
 
They may just look at the amount of feedback voltage (or frequency) that occurs on the power line of all DC devices. A turning rotor will produce a feedback pulse that can be used to determine if the rotor is turning. If it's not turning then no feedback pulse.
 
They may just look at the amount of feedback voltage (or frequency) that occurs on the power line of all DC devices. A turning rotor will produce a feedback pulse that can be used to determine if the rotor is turning. If it's not turning then no feedback pulse.

Right. That's what I meant when I said I see how it detects if it stops spinning.
I suppose what others are saying is this feedback will be different if pump is running dry. The change will be gradual though if water level goes down slowly due to evaporation with no top off.

If I understand this correctly, the soft start is really due to it not using hall sensors (physical limitation), so it has to ramp up spinning and is not some nifty feature jebao invented and added to the pump.
 
They may just look at the amount of feedback voltage (or frequency) that occurs on the power line of all DC devices. A turning rotor will produce a feedback pulse that can be used to determine if the rotor is turning. If it's not turning then no feedback pulse.



Disclaimer: not a motor expert

These are brushless though- I wouldn't expect a back EMF pulse. It's basically an AC motor, just at a lower voltage and run by a variable frequency drive. Most of the motor controller solutions I've seen either want commutation sensors or an RPM pickup inductive loop. That said, there are ways to detect stalls based on current control.
 
If I understand this correctly, the soft start is really due to it not using hall sensors (physical limitation), so it has to ramp up spinning and is not some nifty feature jebao invented and added to the pump.



Yeah, this is my understanding too. The rate of change of speed is limited to keep the impeller speed close to the intended speed within a wide range of operating conditions.
 
Any magnet (electro or otherwise) produces a back voltage pulse as it passes the center pole of the opposing magnet.

A dry pump (or one sucking in air due to low water) would have very little resistance to the change from full water resistance to air water combined or air only. This would result in many changes that could be measured. Change in pulse frequency, reduction in current, lower pulse amplitude (due to reduced resistance), etc... These are all measurable on the power line and could be used to detect dry pump conditions.
 
My Neptune Apex web interface compatible DIY reef controller

Any magnet (electro or otherwise) produces a back voltage pulse as it passes the center pole of the opposing magnet.

A dry pump (or one sucking in air due to low water) would have very little resistance to the change from full water resistance to air water combined or air only. This would result in many changes that could be measured. Change in pulse frequency, reduction in current, lower pulse amplitude (due to reduced resistance), etc... These are all measurable on the power line and could be used to detect dry pump conditions.



The drive circuitry is energized at all times though, all three phases running 120 degrees AC waveforms. There isn't any condition like the brush crossing contacts which would produce an EMF spike in a brushed motor (the magnet is always passing an energized coil). If you detached all the drive FETs and let the motor coast, detecting the speed would be easy (as you now have an alternator). Drivers generally allow an inductive pickup trace under the motor to detect the permanent magnets on the rotor. Since the drivers don't actually generate a linear curve and instead PWM, you need to further filter everything to do detection even from this kind of pickup.

The best bet from what I can gather in VFD literature is monitoring the current per phase to infer loading. A dry or stalled motor will comparatively take little or a ton of current respectively, which trips a limit with some time hysteresis.
 
Last edited:
I got the DCT pump and took a quick look at the controller.

The controller only contains 2 chips, a 28pin TSOP (assuming this is a cpu), and an LM339 quad comparator for the BEMF sensor. Jebao conveniently erased all the parts marking to prevent others from cloning them. :)

There is no PWM input.

I checked the input to a pair of FETs, and can see only the bottom FET use PWM. The bottom FET is connected directly (through a series resistor) to the cpu, and the upper FET is connected through a transistor that is connected to the cpu. The PWM is 15.38khz (65us), and duty cycle varies from 70% to 100% by switching from one led to 10 leds. This matches exactly the specs for DCT 4000, it states the flow range is 2837L to 4000L. 2837 is 70% of 4000. :) If the pump can be fully controlled, I think it is possible to run the pump at a lower gph.

I think the controller is very well designed. whether jebao designed it or copied it, I don't know.

From this, I think the only way to fully control the pump is through another motor driver circuit. I'll look at options. Suggestions welcome. Whatever solution I end up with here, will work on the cross flow / gyre as well.
 
Back
Top