Lots of IO ?

Hello! I want to make controlling unit for my house heater, but I don't want to mess with homemade PCBs.

I need ports:

  • 6 digital inputs, 2 outputs for switches matrix
  • 4 adc for varistors (to set desired temperature)
  • 6 adc for thermometers
  • 1 adc for pressure controls
  • 7 relays (220v/0.5a) to control power and valves
  • 6 inputs for valve state control (10v while closed)
  • lcd

Total:

  • 6 digital inputs
  • 2 digital outputs
  • 11 adc
  • 7 relays
  • 6 isolated inputs
  • lcd

Tell me please, is there exists ready to buy boards with such functions?

What’s you definition of “homemade PCB”?

If you don’t mind soldering parts, you could use one of the various proto-shields (search for “proto” on shieldlist.org, there are dozens) along with a standard Arduino. You probably wouldn’t want to use an Uno because of all the ADC (unless you multiplexed the thermometers), but a Mega has more than enough ADC cabable pins. You would need to wire up some circuitry (on the proto-board) to step-down the voltage on the six 10 VDC, but that’s no problem using either transistors or voltage dividers (and you could use an opto-isolator on each if you wanted). For the seven 220 V/0.5 A outputs you don’t even need relays. Since the current is only going to be about 0.5 A, a MOSFET rated for 250 V would suffice for each of those channels. You should be able to fit all the custom circuitry on either one Mega-sized proto-shield or two stacked standard proto-shields Top it off with an LCD, either on it’s own shield or attached to the top of an enclosure, and you’re good to go.

For the seven 220 V/0.5 A outputs you don't even need relays. Since the current is only going to be about 0.5 A, a MOSFET rated for 250 V would suffice...

MOSFETs don't work with AC. (You could do it with a pair of complementary MOSFETs on each output, but would get "messy".) Plus, he needs some "safety" isolation between the 220V and the Arduino.

Some of your inputs and the LCD can potentially be multiplexed, but not enough to fit within the number of I/O pins on a Uno or Leonardo. So I suggest you use an Arduino Mega - that will be much simpler than messing around with I/O expanders or shift registers. You can find 8-channel relay boards on eBay and elsewhere.

btw the modern way to set temperatures etc. is to use a rotary encoder or up/down buttons while displaying the set point on the LCD, not potentiometers.

Thank you guys!

Far-seeker, "homemade pcbs" are pcbs I need to made by my own hands - trace, print, solder etc. Since college I hate it :slight_smile: I want to isolate controller and heater circuits, so mosfet is not acceptable (DVDdoug, thank you for note about AC, I never had known it).

dc42, as a hardware user, I don't like to enter menus just to adjust speaker volume or something. And same about buttons - dials are more informative and quick to set. Apart of my preferences, system with "old style" controls will be elder friendly.

What are you thinking about my last idea to make controller of two CPU modules - arduino mega and something like raspberry pi? First will work in realtime, while raspberry will be used as user interface with way to control over LAN via web-interface?

I think you can just use the Arduino Mega as the whole sha-bang, I don't see that you need the complexity of adding a R.PI for the web interface.
That can be done very successfully in the Arduino.

For AC isolation, do some research on SSR, 'Solid State Relay' I use them for AC load control, look here Solid-state relay - Wikipedia
Also, for temperature control, think about implementing the concept of having a PID control loop.
Using PID will give you better control than simple limit setpoint control that will ramp up and then ramp down continuously.
PID needs to be understood, but is a very effective control strategy.
Again, I used it in my Mega, and it only consumes a handful of lines of code.

rockwallaby . . .

DVDdoug:

For the seven 220 V/0.5 A outputs you don't even need relays. Since the current is only going to be about 0.5 A, a MOSFET rated for 250 V would suffice...

MOSFETs don't work with AC. (You could do it with a pair of complementary MOSFETs on each output, but would get "messy".) Plus, he needs some "safety" isolation between the 220V and the Arduino.

True, even though it wasn't explicitly stated that these inputs would be AC, I should have recognized that the heaters mentioned in the OP would be operating on AC. However, the necessary isolation can be achieved without relays, e.g. through opto-isolators that I mentioned for a different set of pins.

eugeniusz:
Far-seeker, "homemade pcbs" are pcbs I need to made by my own hands - trace, print, solder etc. Since college I hate it :slight_smile: I want to isolate controller and heater circuits, so mosfet is not acceptable (DVDdoug, thank you for note about AC, I never had known it).

Well having to solder is a requirement of putting together parts on a proto-shield, regardless of the presence or absence of MOSFETs. :wink: However, I think you answered my question sufficiently. Instead of the proto-shields, look for shields with SSRs or mechanical relays although I don't know of any with that many on one shield so you might have to get creative with your wiring...

eugeniusz:
dc42, as a hardware user, I don’t like to enter menus just to adjust speaker volume or something. And same about buttons - dials are more informative and quick to set. Apart of my preferences, system with “old style” controls will be elder friendly.

Fair enough, however I didn’t say anything about menus. Why not use a 128x64 GLCD for the display, then you can display the set points and actual temperatures all the time? If you use potentiometers and don’t display the set points, then you’ll have to calibrate the dials on the potentiometers.

Rotary encoders are elder-friendly, you can make 1 click = half a degree, or whatever other increment you want.

DVDdoug:

For the seven 220 V/0.5 A outputs you don't even need relays. Since the current is only going to be about 0.5 A, a MOSFET rated for 250 V would suffice...

MOSFETs don't work with AC. (You could do it with a pair of complementary MOSFETs on each output, but would get "messy".) Plus, he needs some "safety" isolation between the 220V and the Arduino.

Quite!

Opto-triacs are one route for AC - find a nice mains-rated board with relays and/or opto-triacs to use. And remember 0.5A inductive is completely different from 0.5A resistive as far as loads go. 6A or 10A rated relays are likely to both be up to the job and last a lifetime.

MOSFETs don't work with AC.

With a little bridge, MOSFETs can be easily made to switch AC.

dc42:
Fair enough, however I didn't say anything about menus. Why not use a 128x64 GLCD for the display, then you can display the set points and actual temperatures all the time? If you use potentiometers and don't display the set points, then you'll have to calibrate the dials on the potentiometers.

Rotary encoders are elder-friendly, you can make 1 click = half a degree, or whatever other increment you want.

This would be a very good approach for a user interface. Rotorary encoders will be a bit more expensive per part than push buttons or potentiometers; but they can be used in a much more intuitive way and can directly output a digital signal based on how much they are turned, and in which direction, to the Arduino. In contrast potentiometers will each need an analog input and, as dc42 mentioned, have to have the voltage range calibrated to the possible range of setpoint temperatures.

eugeniusz:
Far-seeker, "homemade pcbs" are pcbs I need to made by my own hands - trace, print, solder etc. Since college I hate it :slight_smile: I want to isolate controller and heater circuits, so mosfet is not acceptable (DVDdoug, thank you for note about AC, I never had known it).

Instead of a homemade PCB, why not go half way and use a pad-per-hole solderable board, solder the parts down, make traces using hookup wire. It works fine and no mess, no having to make a PCB drawing, relatively easy to make changes with a little solder braid, etc. It's ugly, but you will probably want a case any way you make it.

I don't know if it has all the AD you want, but one cool AVR chip is the ATMEGA1284 which is a 40-dip, very hobbiest friendly, 128K, etc. 32 I/Os, six PWM Channels, 8 10-bit ADCs, 3 or 4 timers, depending how you set them up. They seem to be popular. You could add a cheap Microchip AD chip if you needed a bunch more AD channels. Or a TLC5940 for 16 more PWM channels.

JoeN:
Instead of a homemade PCB, why not go half way and use a pad-per-hole solderable board, solder the parts down, make traces using hookup wire. It works fine and no mess, no having to make a PCB drawing, relatively easy to make changes with a little solder braid, etc. It's ugly, but you will probably want a case any way you make it.

I use stripboard, which works well with both DIP ICs and passive components, and is neater. When there are lots of digital connections to be made, I use a wiring pen for them.