Programming needed Start to Finish

Hello,

I have currently require someone to do the programming for the following project. I have already purchased an “Industruino” which is an Arduino board prepackaged with terminal screw connectors and LCD screen and have all of the equipment listed below. I simply need programming portion completed.

Background information:
Maintain building static pressure at neutral to slightly positive pressure relative to outside atmosphere. The inside of the building pressure will be measured using a differential pressure sensor which will read between -0.10 to 0.10”WC. The differential pressure sensor will supply a 0 - 10V output signal with 5V equating to 0.00” WC. The store pressure will be controlled by a damper that allows fresh air to be pumped into the building to raise the pressure should it become negative. This damper will be controller by a 2-10 V signal that corresponds to 0-100% open. This damper will also need to respond to a CO2 sensor in the event the CO2 concentration in the space beings to exceed 800 ppm. The CO2 sensor uses a 0-5V signal which corresponds to a 0-2000 ppm reading.

Objectives:

  1. Use a PID loop that reads the building pressure and adjusts the damper output to keep the building at neutral pressure (0 “WC [5VDC]). The more negative the space the more the damper needs to open, the more positive the space the more the damper may close.
    *Note: The term PID loop is used loosely. While a PID will tunable P, I, and D values would be great I will accept a simple timed loop delay that simply read current building pressure value, then adjust damper output by plus/minus 5%, waits 1 minute, then reads building pressure value again, adjust plus/minus 5%, waits 1 minute, etc.. Of course making sure to use a celing and floor value of 100 and 0%.
  2. Use another PID loop which reads the building CO2 levels and adjust the dampers open if the CO2 level rises above 800 ppm (2 VDC). Again the PID loop here can be a timed looped which opens the damper 5% every minute the CO2 reading is above 800 pp (2VDC) and then subtracts 5% once the vale falls below 800 ppm.
  3. Use and addition statement to combine the output from object 1 and 2 to get the total damper open position. Again, with a max value of 100 regardless of the actual addition.
  4. Have the LCD screen display the following:
    a. Building pressure (-0.1 to 0.1 “WC)
    b. CO2 Level (0-2000 ppm)
    c. % damper open value (0-100%)

Unit:
Manufacture: Industruino
Model: INDIOD21G
Direct Link: Industruino IND.I/O kit | Industruino

Analog Inputs
AI1: Differential Pressure: -0.10 to 0.10 “WC (0-10VDC)
AI2: CO2: 0 to 2000 ppm (0-5VDC)

Analog Outputs AO1: Belimo Damper: 0-100% (2-10VDC)

PM with questions and your required price to complete.
Thanks

The inside of the building pressure will be measured using a differential pressure sensor which will read between -0.10 to 0.10"WC.

I doubt that the output of the undefined sensor will be anything like those units.

The differential pressure sensor will supply a 0 - 10V output

That's more like it. But, don't connect that directly to the Arduino as 10V will make it go poof.

This damper will be controller by a 2-10 V signal

The Arduino can not output a 10V signal.

  1. Use a PID loop

Why? How rapidly do you think the building can react to opening the damper?

I will accept a simple timed loop delay that simply read current building pressure value, then adjust damper output by plus/minus 5%, waits 1 minute

Why wait? Read the sensor. Adjust the damper, if needed. Read the sensor again immediately (or after just long enough for the damper to move to the commanded position). It is unlikely that any change in damper position will be required. But, what is the problem if a new position is determined? Why does moving the damper cause problems? What problem ARE you trying to solve?

  1. Use another PID loop which reads the building CO2 levels and adjust the dampers open if the CO2 level rises above 800 ppm (2 VDC).

Again, why PID? Just how fast can the CO2 level change? Why is CO2 a problem anyway?

PaulS:
I doubt that the output of the undefined sensor will be anything like those units.

Always define the units.

PaulS:
That's more like it. But, don't connect that directly to the Arduino as 10V will make it go poof.

The "Industruino" can do 0-10V input and output. See direct link provided in original post.

PaulS:
The Arduino can not output a 10V signal.

Same as above.

PaulS:
Why? How rapidly do you think the building can react to opening the damper?

Not very fast at all. PID don't have to be optimized to react quickly. You can greatly reduce there reaction speed.

PaulS:
Why wait? Read the sensor. Adjust the damper, if needed. Read the sensor again immediately (or after just long enough for the damper to move to the commanded position). It is unlikely that any change in damper position will be required. But, what is the problem if a new position is determined? Why does moving the damper cause problems? What problem ARE you trying to solve?

I am trying to maintain a building at neutral pressure. The space is large and has varying amount of exhaust fans turning on and off throughout the day. So the amount of exhausting air is not constant. I need to replace this air with treated air through an HVAC unit. Additionally, the air intake fan is has a VFD which also varies its speed by 50% depending if the HVAC unit is circuiting, heating, cooling or dehumidifying. There is no way to determined fixed ratios for all the possible scenarios. So PID seems to be the only logic solution. There is no problem with changing the position of the damper at any point ( i am not sure why you think that is an issue). I just see not point is taking a reading more that 1 once per minute and adjusting the damper as the space is so large any movements will take a while to effect the sensor. If anything i could wait 5 or 10 min. I can determine and tweak all this once the bulk of the programming is completed.

PaulS:
Again, why PID? Just how fast can the CO2 level change? Why is CO2 a problem anyway?

Again, using a PID because there is no way to determine correct amount of fresh air using fixed positions. Go into a room where the CO2 is above 1500 ppm and see how long you last before you want to take a little cat nap!

Hi Justin:
What you need seems pretty straightforward and well defined. I have a couple of questions:

  1. Why did you choose an Industruino vs. a standard PLC with analog I/O? Is long term maintenance likely to be an issue?
  2. Are you sure about the addition of damper positions? It occurs to me that the damper should probably be opened to the larger of the two calculated positions, not their sum. Am I missing something?
  3. Instead of PID, due to the long sample intervals, I think a P or a PI solution may be more applicable.
  4. What is your desired time frame for delivery?

Overall it's pretty simple and well within my capabilities. Depending on my availability, I may consider making a bid.

cedarlakeinstruments:
Hi Justin:
What you need seems pretty straightforward and well defined. I have a couple of questions:

  1. Why did you choose an Industruino vs. a standard PLC with analog I/O? Is long term maintenance likely to be an issue?
  2. Are you sure about the addition of damper positions? It occurs to me that the damper should probably be opened to the larger of the two calculated positions, not their sum. Am I missing something?
  3. Instead of PID, due to the long sample intervals, I think a P or a PI solution may be more applicable.
  4. What is your desired time frame for delivery?

Overall it's pretty simple and well within my capabilities. Depending on my availability, I may consider making a bid.

  1. Went with the Industruino as it seemed simple. It could handle 0-10 VDC, powered by 24 VDC, mounted on a din rail, came with a screen, came with terminal blocks for wiring, came in some kind of enclosure instead of looking like a naked circuit board. I am unsure what the required maintenance will be but at this moment doesnt seem like much of a concern to me.
  2. Yes, if the first loop is maintaining the building pressure and has the damper open lets say 30% then all the sudden the CO2 is still somehow slightly higher than it should be i would need to open the damper additional amounts like another 5 or 10%. So they need to add otherwise i may be only satisfying one of the two criteria.
  3. Yes, agreed. really anything with a loop sequence control will do.
  4. Ideally like everything in the world i would like ASAP. Realistically within a week would be ideal.

It seems simple as when you break it down it is only 2 inputs with 2 loops and some addition and a single output, but then again i can't program it ....

PM with a price and your time estimate. Feel free to break the price out into two sections one for the project and then one for "accelerated delivery" charges.

Thanks

Sorry about the late reply. Every time I tried getting onto the board yesterday, it was down.

By "maintenance" I meant future changes. Generally people like PLCs for things like this because it's easy to find someone to update the program. On Arduino it may be a bit more difficult. OTOH, I'm not going anywhere :slight_smile:

The control loop may need some "tuning" once the system is installed, but I can add a serial port interface to do that, unless you prefer to update constants in the program. The latter is simpler, but less flexible.

I'll PM you today.