Greenhouse ventilation control - Design review

Hi,

I'm fairly new to the Arduino world, but have been working on designing a controller to drive 4 linear actuators used to open and close ventilators in our greenhouse. As my knowledge of electronics are fairly basic (I'm a computer engineer, but more on software than hardware). Thus designing this controller has been quite a steep learning curve so far. But now I've come to a point where I can't improve the design any further without some help. That's why I'm writing this, hoping to get some insight to what is possible wrong, and what could be improved in my design.

Please see attached Greenhouse schematics.

The core controller is an Arduino Nano 33 IoT. This because I want to be able to control the greenhouse remotely.

In addition, there are several breakout-boards;

In addition, I've added contacts for 433 MHz receiver/transmitter, an RTC clock (not sure I need this), external digital temp sensors and some spare I2C connectors for future use. I've also made break-out for unused GPIO pins.

Also attached is a 3D-view of the proposed PCB.

I hope it's not too much, but if anyone could try to review my design proposal, I would be extremely happy!

Best regards,

Eirik

What is the obstacle stopping You?

Have you had it working with the components breadboarded together?

You are applying the 5V from the buck converter to Vin. That should go to the 5V pin. Sorry, 3.3V system. The onboard 3.3V regulator is not heat sinked so can supply limited current. If it gets hot you may have to rethink your power strategy.

You have several modules connected to I2C. How many of those modules have pullup resistors on them? What is the total of the all of the parallel pullup resistors on the bus?

D1 and D2 LEDs should each have a resistor, not one 220 for both.

Check the enable input to the buck converter, my guess is that you connect it to 0V to make the converter work, not to Vin (I have not checked, just looks wrong).

Remove the 1N4001 from the 5V output of the buck converter, having it means your 5V supply is more like ~4V3. If I missed something and you really need a diode then use a Schottky diode as these have much lower voltage drop.

You are taking a chance powering other things from the Nano's 3V3 pin, I'd at least consider a separate 3V3 regulator.

You need at least 1 tank capacitor (like C1) for the 3V3 power.

Although the various boards you are using probably have their own it wouldn't harm to have some 0μ1 ceramic capacitors across the supply pins as close as physically possible for each device.

Thank you for all your replies and great feedback! I'll spend some time to adjust for these and repost when done. Hope that's ok.

@Railroader: No really obstacles, just needed someone with more knowledge than myself to check the design. Point proven by the great feedbacks :slight_smile:

@wildbill: No, I don't have all the components yet to test it out. After adjustments from the tips here, I'll order the components I don't already have.

@groundFungus: I'll have to check which modules have pullup resistors (I believe all Adafruit modules have them). As for the two spare I2C connectors, maybe I could add two 4.7k resistors on the SDA and SCL lines with a jumper to bypass these for modules with built-in resistors? Could that do the trick?
The two LEDs will never both be lit, it's either one or the other (Auto or Manual operation). Won't I get away with a common resistor then?

@PerryBeddington: I was a bit uncertain about the enable pin of the buck. But how do I connect that to 0V?
Thanks for mentioning the voltage drop on the diode. I don't know if I really need it, just added it for good (poor?) measure.
I did have a second 3.3V buck in a previous version of the design, but thought I could get away with the Nano's 3V3. I'll put it back in. I'll also add your proposed capacitors :slight_smile:

Thanks again!

Best regards,

Eirik

I was a bit uncertain about the enable pin of the buck.

Test it first, I am not completely certain.

But how do I connect that to 0V?

Seriously???

You don't need the diode.

It is not that each module have pullups, it is the parallel combination of the resistances. With too many pullups in parallel the total can be too low.

PerryBebbington:
Test it first, I am not completely certain.
Seriously???

You don't need the diode.

Sorry, my mind was somewhere else...
Tying the enable pin to ground, will shut down the output. I checked the MPM3610 schematics and see that it is by default tied to VIN through a 100k resistor.

I presume then I'll just leave it untied, right?

Screenshot 2020-11-16 205445.jpg

Screenshot 2020-11-16 205445.jpg

I presume then I'll just leave it untied, right?

That sounds reasonable, yes.

Nice looking board !

Think I would have been tempted to just mount a 328 processor and crystal etc on the board , rather than fitting a nano .

Maybe think about some bottom up investigation. If I were working on this, I'd want to prove to myself that I can control and drive one of those actuators and that further, they can open the vents I had in mind.

Top down design is good when you have a reasonable idea of what will work, but I think you may need to do some pre-work to get to that point.

hammy:
Nice looking board !

Think I would have been tempted to just mount a 328 processor and crystal etc on the board , rather than fitting a nano .

Thank you hammy!
Yes, tempting to skip the Nano, but I would need to add the wifi/bluetooth chip, antenna, crypto chip and PC interface as well. Too complicated for an amateur like me :slight_smile:

wildbill:
Maybe think about some bottom up investigation. If I were working on this, I'd want to prove to myself that I can control and drive one of those actuators and that further, they can open the vents I had in mind.

Top down design is good when you have a reasonable idea of what will work, but I think you may need to do some pre-work to get to that point.

Yes indeed! I will not build this board before see I can successfully use an actuator for this purpose. I have done all the necessary measures etc. but still need to do a PoC.
Attaching a picture of how the ventilators look. Today, these use a cylinder filled with wax which will expand when temperatures rise (removed in this picture). Very smart system, but since I have large heaters in the ceiling, these will open when the greenhouse is used for dining etc. in wintertime when not much is growing here. So I need a smarter way of controlling these vents as well as the possibility to control them manually.

Based on your great feedback, I've done the following changes:

  • Added several 0.1uF capacitors
  • Added a 3.3V buck for additional power supply
  • Added a 100uF capacitor on the 3.3V power line
  • Removed a diode on the 5V power line
  • Added option to add pullup resistors for the reserve I2C connectors.
  • Added 4.7k pullup resistor to the temperature sensors' DATA to VCC line (according to specifications)

In order to incorporate the added components, I've also changed the PCB layout to fit in a larger box.

Questions I now have are;

  • Are my capacitors correctly placed and sized?
  • Do I need to add any capacitors or other alterations on the 12V power? Each linear actuator has a stall current of 650mA. Will this create a problem? I can program the controls so that only one actuator will be in use at the same time to reduce max current.
  • Is it ok to use one pullup resistor across the three temperature sensor's DATA lines as they are all connected to the same GPIO D7? I might also end up using only one of these connectors and use a separate splitter somewhere else to connect 2-3 sensors.
  • The back has a copper fill for GND. Does it make sense to create copper fills on top for e.g. 12V, 5V and/or 3.3V?
  • Does my design have any other apparent weaknesses?

Best regards,

Eirik

  • wrong pullup resistor placement for 12c line, that should be vcc->R->i2c line
  • your board mostly use female header, better to use male header in your board and female wire. because male wire easily bend.
  • nano i2c line can work without level shifter on both 3.3v and 5v, maybe you could test to make sure. i had tried with bme085 and i2c LCD can work perfectly

rzk:

  • wrong pullup resistor placement for 12c line, that should be vcc->R->i2c line
  • your board mostly use female header, better to use male header in your board and female wire. because male wire easily bend.
  • nano i2c line can work without level shifter on both 3.3v and 5v, maybe you could test to make sure. i had tried with bme085 and i2c LCD can work perfectly

Wow, I don't believe I made that mistake with the I2C pullup! Not sure where my head was! Thank you! :slight_smile:

As for the female headers, I admit I had male headers in an earlier iteration, but changed them to female in order to reduce chances of accidental shortages. But you're probably right so I will change the spare connectors to male. I'll keep the others female though as I want to be able to use the components that goes into these as plug-and-play.

I was not aware the Nano can work with 5V on its input lines. I know the Nano can be powered using up to 21V, but the SAM D21 chip has max VDD of 3.8V according to the data sheet. Any chance I could blow the Nano if I test it with 5V input?

Best regards,

Eirik

eiriks:
I was not aware the Nano can work with 5V on its input lines. I know the Nano can be powered using up to 21V, but the SAM D21 chip has max VDD of 3.8V according to the data sheet. Any chance I could blow the Nano if I test it with 5V input?

i'm sorry, i didn't read that you're using Nano-IOT.
only nano basic with ATmega328 that can handle 5v.
so the answer yes you could damage your board by giving 5v input.
see the refference here on please read section

rzk:
i'm sorry, i didn't read that you're using Nano-IOT.
only nano basic with ATmega328 that can handle 5v.
so the answer yes you could damage your board by giving 5v input.
see the refference here on please read section
https://www.arduino.cc/en/Guide/NANO33IoT

Ok, and thanks for the link :slight_smile: