Skip to content

An Arduino shield for controlling the FläktWoods RDKR ventilation unit

License

Notifications You must be signed in to change notification settings

tophee/FTXcontrol-Shield

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FTXcontrol-Shield

An Arduino shield for controlling the FläktWoods RDKR ventilation unit

In this project, I'm monitoring and controlling the ventilation of my house. My ventilation unit is a FläktWoods RDKR (which as a rotating heat exchanger, hence FTX) but it should be possible to use at least parts of this project with other systems.

Please note that this repository does not yet include all the information that it should include. I will remove this line once at least a first version of everything is uploaded.

Features

  • Monitor and log temperature and humidity of
    • outside air (uteluft)
    • incoming air (tilluft)
    • inside air (frånluft)
    • outgoing air (avluft)
  • Monitor the efficiency of the heat (and humidity) exchanger.
  • Automatically change ventilation state (low, middle, high) based on temperature and/or humidity values. For example:
    • Set ventilation to low when outside temperature is higher than inside temperature (Don't have the ventilation heat up the house on hot summer days.)
    • Set venilation to high when oustide temperature is lower than inside temperature and insider temperature is over 25°C. (Cool down the house during the night.)
  • Log all values
    • to either a csv file (using processing to read the data from the Arduino serial port) or
    • to an InfluxDB database (using Petr Pudlak's python script to read the serial port and send the data to the database). (Update: Petr's scripts have served me well for two or so years, but when I changed my setup and moved the processing to a new machine, the script kept hanging whenever an incomplete line (=an incomplete set of transmitted data) was received. I updated the code to include a 10s timeout, i.e. any line that is not completed within 10 seconds will be dismissed in my fork.)
  • Display values on an LCD display on the ventilation unit (currently not quite implemented)
  • Manually control the ventilation state via a button

Hardware used

  • 1 Arduino Uno
  • 3-4 Sonoff Si7021 temperature and humidity sensors
  • 1 PCB prototyping board with at least 14 x 21 holes (to start with, you can of course use a breadboard)
  • Various electronic components to build the shield (see schematic). Most importantly:
    • 1 photoresistor for reading the current ventilation state via the LED on the ventilation unit's control board
    • 1 optocoupler to switch the ventilation state on the control board
  • (1 LCD display)

The Arduino is connected to a USB port on a Linux server. This was a convenient solution for me because I already had my home server next to the ventilation unit. If you don't have a computer close by, this the control shield will still work fpr controlling the ventilation but you will not be able to log anything. Connecting the Arduino to wifi or ethernet would be an entirely new project, but it's possible, of course.

The schematic

This is the schematic of the final board:

There are five basic sets of components:

The photoresistor

On the left: R1, J1, R2

R1: photoresistor PGM5506 18-50 kohm. J1: female pinheader (2 pins) R2: 1k or 10k resistor (in the schematic and the photos you see 1k but I think 10k works better because it uses a larger voltage range.

The two resistors form a voltage divider and the Arduino reads the voltage corresponding to the photresistors current resistance (which varies based on the amount of light it receives. It receives more light when the LED closest to it is lit and least light when the LED furthest away from it is lit). See here for details.

The button

On the bottom: SW1 C1, R3

SW1: some push button C1: 0.1µF capacitor for debouncing the button. The capacitor can be ommitted if debouncing is done softwarewise, i.e. in the Arduino sketch. R3: 10k pull-down resistor to prevent pin 2 from floating.

The button is not strictly necessary. I used it mainly for testing and debugging purposes and left it there to eventually control the display and possibly some more with it. Currently it just switches to the next ventilation state, just like when pressing the button on the ventilation system's control panel.

The sensors

On the lower right: J3, U2, U3, U4 (U1 is missing because I'm currently only using 3 sensors)

J3: female pinheader (12 pins) U2-4: Sonoff Si7021. Each sensor is connected to ground, 3.3V and a digital pin. If I'd do it again, I'd put the 3.3V pin in the middle, not the data pin.

The Sonoff sensor comes with a cable and a 2.5mm headphone plug but I'm not using those because the cable is too thick to lead through the door of the ventilation unit. I soldered thinner wires onto the sensors board. The sensors should be calibrated against each other, but I haven't finished that procedure yet.

The display connector

Further up on the right: J2

At some point I had a 16x2 LCD display connected to show me the sensor values and the code is still in the Arduino sketch but I'm currenltly not using it but the pins are there. They can also be used for something else.

The optocoupler

Top right: R4, R5, U5, J4

R4: 1k resistor to prevent short-circuiting the control board of the RDKR unit. R5: 1k resistor to prevent short-circuiting the Arduino board U5: PC817X DIP-4 optocoupler

This connects the Arduino to the ventilation control board while keeping the two galvanically separate. In order to switch to the next ventilation state, two pins on the control board need to be connected to each other. It can be done with a mechanical switch but since the whole point here is to allow the Arduino to control the ventilation, an optocoupler is used. When voltage is applied to one side of the optocoupler, the pins on the other side are shortened.

The wiring between the shield and the ventilation control board is described here.

The PCB

This is how I fitted it on my PCB with 14 x 21 holes:

Front:

Legend:

  • Green lines are connections on the back (bootom) of the board
  • Red lines are connections on the front (top) of the board
  • White circles are vias, i.e. connections between the front and the back of the board
  • White lines can be ignored
  • The yellow circles at the top and bottom represent the Arduino pins.
  • The yellow rectangle represents the edge of the PCB. So the board is not covering all pins (because that's the size board I happened to have).

To connect the shield to the arduino, header pins are soldered onto the back of the PCB, making it easy to connect to these on the front.

Note that the wiring for the sensors on the picture is incomplete. Each sensor needs three wires.

Back:

Connecting the shield to the ventilation control board

See here.

About

An Arduino shield for controlling the FläktWoods RDKR ventilation unit

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages