Go Back  
Reply
 
Thread Tools
Old 06-07-2011   #1
zembor0
Member
 
Join Date: May 2010
Posts: 63
Likes: 4
Liked 32 Times in 10 Posts
Mentioned: 3 Post(s)
Tagged: 0 Thread(s)
Ps3 with Temperature Display and Fan Controller

First off if you don't like this then don't read it. If your only going to complain its not CFW or QA flag then go away.

If you can't be asked to read just watch the video

Now i have said that, this is my PS3 case mod, there are 4 seven segment displays on the front. The left two show the temperature of the PS3 from a LM35dt temperature sensor i have added between the two heat-sinks on the motherboard. The two displays on the right show the current fans speed as a percent. The fan speed will go up as the temperature goes up, or you can set the fan speed manually with my TV remote. The display can be turned on or off with the remote, also you can make it count down from 99 to 0 in 1 second (i got bored so i added this, there is not practical reason).
I have also added a blue PlayStation logo on the top of the front of the PS3, as well as some red LEDs shining out of the air vents on the top and the front of the PS3. These LEDs have three modes, ON, OFF, and sound reactive. They will flash to whatever sound is coming out of the PS3. Of course these modes are selected from the remote.

Youtube video:
YouTube - ‪PS3 with Temperature display and Fan controller‬‏

I have taken lots of pictures as i went along of the wiring and of the holes so if you are interested have a look:
For the full Album click here


The left number is the temperature and the right one is fan speed (42c & 44%)



The right board is the 4 MCP23008 chips controlling the 7 segment displays. The left board is full of transistors that control the 12v current to the LEDs. The 5v voltage regulator is on the bottom of the left board.



This is the LEDs before they were wired



The red LEDs shining out the front




If you are interested in the arduino code then here it is:
I have written all the code apart from the IR libraries and the StartUp sub. (Thanks to KillerBug for the StartUp code. i don't know what it does but my code did not have it so a added it
Code:
#include <IRremote.h>
#include <IRremoteInt.h>
#include <Wire.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int FanPin = 9;
short PurpleWire = 7;
short PinkWire = 8;
int TempPin = A0; 
int FanSpeed = 30;
int MinFanSpeed = 30;
int Temperature = 0;
boolean DisplayActive = 1;
short DisplayMode = 2; 
unsigned long NextReading = 500;
unsigned long NextIRSignel = 500;
byte boards[4] = {B0100000,
                  B0100001,
                  B0100010,
                  B0100011
                 };
                 
byte numbers[10] = {B00111111,//0
                    B00000110,//1
                    B01011011,//2
                    B01001111,//3
                    B01100110,//4
                    B01101101,//5
                    B01111100,//6
                    B00000111,//7
                    B01111111,//8
                    B01100111,//9
                    };
                    
void setup(){
 analogWrite(FanPin, int(30 * 2.55));
 Wire.begin();
 startUp(0x20); 
 startUp(0x21); 
 startUp(0x22); 
 startUp(0x23);
  pinMode(PurpleWire, OUTPUT);  
   pinMode(PinkWire, OUTPUT);  
   QuickCount();
   irrecv.enableIRIn();
} 

void digitWrite(short Display, int number){
  byte OutDisplay1 = 0;
  byte OutDisplay2 = 0;
  int Number1 = 0;
  int Number2 = 0;
  
if (Display == 0) {
 OutDisplay1 =  boards[0];
  OutDisplay2 =  boards[1];
}
if (Display == 1) {
 OutDisplay1 =  boards[2];
  OutDisplay2 =  boards[3];
}
if (number >= 10){
Number1 = (number / 10);
Number2 = (number - (10 * int(number / 10)));
}
if (number <10) {
  Number1 = 0;
  Number2 = number;
}
 Wire.beginTransmission(OutDisplay1);
 Wire.send(0x09);
 Wire.send(numbers[Number1]);
 Wire.endTransmission();
 Wire.beginTransmission(OutDisplay2);
 Wire.send(0x09);
 Wire.send(numbers[Number2]);
 Wire.endTransmission();
}

void startUp(uint8_t X){
  Wire.begin();
  Wire.beginTransmission(X);
  Wire.send(0x00);
  Wire.send(0xFF);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.endTransmission();

  Wire.beginTransmission(X);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.endTransmission();
}

void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile ("  jmp 0");  
} 

void CheckIRSignels(){
  if (irrecv.decode(&results)) {
     if (results.value == 0x490){ // Volume UP
      if (FanSpeed < 98) {
       FanSpeed += 1;
      }
      
    }else if (results.value == 0xC90){ // Volume Down
      if (FanSpeed > MinFanSpeed){
       FanSpeed -= 1; 
      }
      }else if (results.value == 0x9EBD0){ // Zoom
        software_Reset();
        }else if (results.value == 0xD4B5F){ // Play Mode
          if (millis() > NextIRSignel){ 
          QuickCount();
          NextIRSignel = millis() + 200;
          }
          }else if (results.value == 0x90){ // Program Up
            
            }else if (results.value == 0x890){ // Program Down
              
              }else if (results.value == 0xA50){ // Input
              if (millis() > NextIRSignel){ 
             if (DisplayMode == 1){
              DisplayMode = 2 ;
             }else if (DisplayMode == 2) {
               DisplayMode = 0;
               } else{
                DisplayMode = 1; 
               }
               NextIRSignel = millis() + 200;
          }
             }else if (results.value == 0xA90){ // Power 
             if (millis() > NextIRSignel){ 
       if (DisplayActive == 1) {
        DisplayActive =0;
       } else {
        DisplayActive = 1; 
       }
        NextIRSignel = millis() + 200;
      }
               }
      irrecv.resume();
  }
}

void CheckTemperature(){
  int readings[5];
  for (int x = 1;x<6;x++){
    readings[x] = analogRead(TempPin);
  }
    int reading = ((readings[1] + readings[2] + readings[3] + readings[4] + readings[5]) / 5); 
 Temperature = ((reading * 5)/1024.0) * 100 ;
}

void SetFanSpeed(){
    int LowestSpeed = 0;
    for (short temp = 0; temp < 99; temp++){
  if (Temperature == temp) (LowestSpeed = temp);
  }
  if (LowestSpeed > FanSpeed) (FanSpeed = LowestSpeed);
  analogWrite(FanPin, int(FanSpeed * 2.55));
}

void UpdateDisplays(){
      digitWrite(0,Temperature);
     digitWrite(1,FanSpeed);
}

void ClearDisplays(){
  for (short x=0;x<5;x++){
   Wire.beginTransmission(boards[x]);
 Wire.send(0x09);
 Wire.send(0);
 Wire.endTransmission();
  }
}

void SetDisplayMode(){
  if (DisplayMode == 0) {
        digitalWrite(PinkWire, LOW);
    digitalWrite(PurpleWire, LOW);
  }
  if (DisplayMode == 1) {
    digitalWrite(PurpleWire, HIGH);
    digitalWrite(PinkWire, LOW);
  }
  if (DisplayMode == 2) {
    digitalWrite(PinkWire, HIGH);
    digitalWrite(PurpleWire, LOW);
      }
}

void QuickCount(){
   for (int x=99; x>=0; x--){
    digitWrite(0,x);
     digitWrite(1,x);
     delay(10);
  }
}

void loop(){
 CheckIRSignels(); 
 if (millis() > NextReading){
 CheckTemperature();
 SetFanSpeed();
 NextReading = (millis() + 700);
 }
 if (DisplayActive == 1){
 UpdateDisplays();
 } else {
   ClearDisplays();
 }
 SetDisplayMode();
}

If you are wondering this is not a copy or a mod of KillerBug's mod, i have been working on a similar project. However i still want to say a big thanks to him as he has answered lots of questions i have asked him as well as recommending me the MCP23008 chips.

If you have any suggestions or comments then please post or PM me
zembor0 is offline   Reply With Quote
Old 06-07-2011   #2
KingKush
Member
 
KingKush's Avatar
 
Join Date: Sep 2010
Location: Los Angeles
Posts: 875
Likes: 36
Liked 287 Times in 166 Posts
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Wow I am totally impressed man, That is 1 super killer mod, that is sick!!!
__________________

Why so serious Sony!
Download CFW 3.66 Click Here!
KingKush is offline   Reply With Quote
Old 06-07-2011   #3
Chris9191
 
Join Date: Oct 2010
Posts: 531
Likes: 21
Liked 116 Times in 64 Posts
Mentioned: 6 Post(s)
Tagged: 0 Thread(s)
that is really good. ime going to try this myslef. with your help lol
Chris9191 is offline   Reply With Quote
Old 06-07-2011   #4
KillerBug
Senior Member
 
KillerBug's Avatar
 
Join Date: Apr 2010
Posts: 2,322
Likes: 148
Liked 1,100 Times in 619 Posts
Mentioned: 85 Post(s)
Tagged: 0 Thread(s)
That is some great stuff...simply awesome; this needs to be front page'd.

A few questions...
-Using the automatic control where 1 degree = 1% fan speed, how hot does it get while gaming?
-I don't see the music reaction in the code...are you using an off-the-shelf unit or am I just tired and missing that section?
-What hardware are you using for the IR, and where did you put the sensor?
__________________
KillerBug is offline   Reply With Quote
Old 06-07-2011   #5
daveyp187
Member
 
daveyp187's Avatar
 
Join Date: May 2011
Location: UK
Posts: 743
Likes: 114
Liked 173 Times in 108 Posts
Mentioned: 24 Post(s)
Tagged: 0 Thread(s)
dude that is awesome

are you selling it...
__________________

Ps3 3.55WT, 1TB HDD,
Find me on twitter@daveyp187
daveyp187 is offline   Reply With Quote
Old 06-07-2011   #6
zembor0
Member
 
Join Date: May 2010
Posts: 63
Likes: 4
Liked 32 Times in 10 Posts
Mentioned: 3 Post(s)
Tagged: 0 Thread(s)
Originally Posted by KillerBug View Post
That is some great stuff...simply awesome; this needs to be front page'd.

A few questions...
-Using the automatic control where 1 degree = 1% fan speed, how hot does it get while gaming?
-I don't see the music reaction in the code...are you using an off-the-shelf unit or am I just tired and missing that section?
-What hardware are you using for the IR, and where did you put the sensor?
1) This PS3 has a broken blu-ray drive so i can't test a game like COD, I have not tested playing a PSN game yet but it seems to settle at 48 and it is a very smooth speed change, not like your "revving" . (ill edit this after more testing)
EDIT:
Ok its been on over an hour now and i've tried a few different games and the temperature peaked at 51 and settled at 50 while playing, i'm sure it would go higher playing COD. The most demanding game i have on it is Burn Zombie Burn.

2) The music reaction is done with 2 TIP31a transistors. The sound from the motherboard is connected to the base of the first transistor. That transistor has 5v going through the collector - emmitor. the emmitor of the first transistor is connected to the base of the second. The second then has 12v going from collector to emmitor. The LEDs are connected to the collector leg and the emmitor is grounded.
There is a third transistor used as a switch which the arduino controls to put the LEDs into reactive mode.
Hope you can follow that, ill try again if not.

3) You are asking about the hardware, not the libraries. OK. I used a TSOP4838 Infrared Reciever 38kHz. Since i snapped of almost all the pins on the translucent case of the ps3 i put the reviver in one of the holes on top of the blu-ray drive. It still get good signal across the room through the lid.
look at this pic:
http://imageshack.us/photo/my-images/534/img2792k.jpg/
It's at the bottom right ish.


Originally Posted by daveyp187 View Post
dude that is awesome

are you selling it...
You wouldn't want this one

Last edited by zembor0; 06-07-2011 at 01:49 PM.
zembor0 is offline   Reply With Quote
Old 06-07-2011   #7
systematic
Member
 
systematic's Avatar
 
Join Date: Aug 2010
Location: denver
Posts: 473
Likes: 144
Liked 103 Times in 77 Posts
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
That is really cool
__________________
Originally Posted by RaGe_SwAg
nm i wanna move to washigton 24oz thats almost a pound
systematic is offline   Reply With Quote
Old 06-07-2011   #8
GregoryRasputin
 
GregoryRasputin's Avatar
 
Join Date: Jan 2008
Posts: 14,429
Likes: 8,171
Liked 14,520 Times in 5,566 Posts
Mentioned: 1314 Post(s)
Tagged: 3 Thread(s)
Front paged
GregoryRasputin is online now   Reply With Quote
Old 06-07-2011   #9
KillerBug
Senior Member
 
KillerBug's Avatar
 
Join Date: Apr 2010
Posts: 2,322
Likes: 148
Liked 1,100 Times in 619 Posts
Mentioned: 85 Post(s)
Tagged: 0 Thread(s)
Neat...btw; mine hasn't revved since the first release. I'll have to pickup one of those IR receivers...seeing this gives me some interesting ideas; I never even thought of putting stuff behind that panel.

Originally Posted by zembor0 View Post
1) This PS3 has a broken blu-ray drive so i can't test a game like COD, I have not tested playing a PSN game yet but it seems to settle at 48 and it is a very smooth speed change, not like your "revving" . (ill edit this after more testing)
EDIT:
Ok its been on over an hour now and i've tried a few different games and the temperature peaked at 51 and settled at 50 while playing, i'm sure it would go higher playing COD. The most demanding game i have on it is Burn Zombie Burn.

2) The music reaction is done with 2 TIP31a transistors. The sound from the motherboard is connected to the base of the first transistor. That transistor has 5v going through the collector - emmitor. the emmitor of the first transistor is connected to the base of the second. The second then has 12v going from collector to emmitor. The LEDs are connected to the collector leg and the emmitor is grounded.
There is a third transistor used as a switch which the arduino controls to put the LEDs into reactive mode.
Hope you can follow that, ill try again if not.

3) You are asking about the hardware, not the libraries. OK. I used a TSOP4838 Infrared Reciever 38kHz. Since i snapped of almost all the pins on the translucent case of the ps3 i put the reviver in one of the holes on top of the blu-ray drive. It still get good signal across the room through the lid.
look at this pic:
http://imageshack.us/photo/my-images/534/img2792k.jpg/
It's at the bottom right ish.




You wouldn't want this one
__________________
KillerBug is offline   Reply With Quote
Old 06-07-2011   #10
Controller
Member
null
 
Join Date: Mar 2008
Location: Finland, The Isle Of Kotka
Posts: 40
Likes: 1
Liked 18 Times in 6 Posts
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Send a message via MSN to Controller
Zembor0, just an idea, but i think your PS3 should react to sounds too. Like Playstation, on. Playstation, off. And then maybe Playstation Disc Off or what ever you think is good for it. Anyways it's amazing piece of work and art
Controller is offline   Reply With Quote
Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



PS3Hax.net is Copyright © 2010-2013.
Use of this site is governed by our Terms of Use and Privacy Policy. All Trademarks and images are owned by their respected owners.
Posts and links are subject to each author on this forum and are no way affiliated with the operations and/or opinions of ps3hax.net
All times are GMT -5. The time now is 01:00 PM.