Previous posts for this project:
- [CaTS] ForgetMeNot - Index
- [CaTS] ForgetMeNot - Week 0: Project Description
- [CaTS] ForgetMeNot - Week 1: EnOceanPi and Sensors
- [CaTS] ForgetMeNot - Week 2: Elro CoCo and Pi Cam with OpenHAB
- [CaTS] ForgetMeNot - Week 3: Data persistence and charts with OpenHAB
- [CaTS] ForgetMeNot - Week 4: Arduino-OpenHAB communication
- [CaTS] ForgetMeNot - Week 5: Getting familiar with EAGLE
- [CaTS] ForgetMeNot - Week 6: Getting to know the TBS1052B-EDU oscilloscope
- [CaTS] ForgetMeNot - Week 7: First tests with RPiSoC
- [CaTS] ForgetMeNot - Week 7 (2): More testing with RPiSoC
- [CaTS] ForgetMeNot - Week 8: Water dispenser and temperature
- [CaTS] ForgetMeNot - Week 9: RFID Cat detection and identification
- [CaTS] ForgetMeNot - 3D Printing: EnOcean sensor bracket
- [CaTS] ForgetMeNot - 3D Printing: EnOcean rocker switch and magnet holder
- [CaTS] ForgetMeNot - 3D Printing: Food dispenser prototype
- [CaTS] ForgetMeNot - 3D Printing: Weighing scale
- [CaTS] ForgetMeNot - Security: Some basic tips
- [CaTS] ForgetMeNot - Minion: Dave, the gassy minion
- [CaTS] ForgetMeNot - Pi Camera: Wide Angle Lens
Introduction
In the little time I have had this week to work on my project, I've been experimenting with a peltier. Ideally, I'd like to use it to cool the water in the bowl.
Idea
I got the idea for the cooling method while watching the Ben Heck show, more specifically, the EMF camping chair episode.
Having most of the parts laying around, I attempted my own version with:
- a small peltier from previous experiments
- fan from old computer
- heatsink for old computer
Now, the peltier is most likely not powerful enough, but I would like to put the idea to the test using the hardware I already have.
Circuit
To drive the peltier, I used an N-channel MOSFET triggered by a PWM signal from the RPiSoC.
I made the circuit with some screw terminals, to which I can attach the PSU, the peltier and the RPiSoC. I put some hotglue on the back to avoid accidental short-circuits.
Mounting
Using some clamps, I tried to flatten a part of the metal bowl. On that (supposed to be) flat side, I attached the peltier, heatsink and fan.
I say "supposed to be" because the result is still not flat enough for the peltier to make proper contact with the bowl.
The mounting is not that nice, but it illustrates the idea and should be functional in the end.
Script
I wrote a simple script which will pass set the PWM signal's duty cycle to the passed value.
The script includes some simple checks:
- an integer needs to be passed, else the duty cycle is set to 0
- the integer's value needs to be between 0 and 100, else duty cycle is set to 0
#!/usr/bin/env python from rpisoc import * import sys RPiSoC('SPI') My_DutyCycle = sys.argv[1] My_PWM = PWM(1) # Port 3 Pin 1 My_PWM.Start() My_PWM.WritePeriod(65535) try: My_DutyCycle = int(My_DutyCycle) if(My_DutyCycle >= 0 and My_DutyCycle <= 100): # Inside boundaries, set passed value print "Inside boundaries, set passed value" My_PWM.SetDutyCycle(My_DutyCycle) else: # Outside boundaries, turn off print "Outside boundaries, turn off" My_PWM.SetDutyCycle(0) except ValueError: # Invalid value, turn off print "Invalid value, turn off" My_PWM.SetDutyCycle(0)
A quick sanity check of the script confirms the input is properly checked:
pi@webserver ~/psoc_2_pi/API_Python_v_1_1_1 $ ./rpisoc_peltier.py 5 Inside boundaries, set passed value pi@webserver ~/psoc_2_pi/API_Python_v_1_1_1 $ ./rpisoc_peltier.py 100 Inside boundaries, set passed value pi@webserver ~/psoc_2_pi/API_Python_v_1_1_1 $ ./rpisoc_peltier.py 101 Outside boundaries, turn off pi@webserver ~/psoc_2_pi/API_Python_v_1_1_1 $ ./rpisoc_peltier.py a Invalid value, turn off pi@webserver ~/psoc_2_pi/API_Python_v_1_1_1 $ ./rpisoc_peltier.py 0 Inside boundaries, set passed value
Test
In the pictures below, you can witness the test setup.
The multimeter measures the current draw of the peltier and fan, the scope visualises the PWM signal of the RPiSoC.
From left to right, 0% duty cycle, 50% and 100%.
During the tests, I was able to have this specific peltier run without the heatsink becoming too hot. I'll have to calculate which peltier and heatsink should be used in the end, considering the amount of water to be cooled, by how many degrees and in which timespan. This might however result in a large heatsink, rendering the solution rather impractical.
Currently, this can only be considered a proof of concept. As the peltier is not making proper contact with its full surface with the bowl, the cooling effect is not properly passed.
I'll try to find a solution for this in the days to come, but time is running out, and everything still needs to be combined into a single solution, so I'll leave it at this for today.
More on this subject soon, hopefully!