Daily Archives: November 25, 2015

PSU Project #10 – Current sensing and regulation

Published by:

In this video I will go over techniques of sensing current in the PSU circuit as well as explore the regulation of the current.

It’s been a while since my last episode, I have been busy with school work and I also needed to construct a variable dummy load in order to get this working.

We are nearing the end of the series. In the next video we will be putting the analogue side and the digital side together and having a look at it being completely driven from the DAC.

QSat Teardown – Part 2

Published by:

This is the 2nd part of the teardown of the QSat

In this video I do the actually capturing of some buttons on the IR receiver. We also analyze the LED data train and decode the way the screen is driven.

QSat Teardown – Part 1

Published by:

So I got another satellite receiver to tear down. This one is similar to the Viewsat VS2000 one I tore down previously, check the video

Just like the previous one I will be decoding the LED display driver, but unlike the previous one, I will be capturing the IR receiver data in hopes of using the remote control in a future project.

PSU Project #9 – Button and Matrix inputs

Published by:

Hi All,

sorry for the delay adding this to my website, I’ve been busy with college. I’ve just uploaded part 10 and realized that I didn’t update the webpage for 9, so here it is.

In this episode I will be briefly covering using the button inputs on the Arduino. I briefly go over debouncing and then I introduce using a matrix keypad to allow more buttons to be used.

Arduino code for debounced button input:

#include <LiquidCrystal.h>
#define button_5 6
#define button_4 7
#define button_3 8
#define button_2 9
#define button_1 10
#define hold_limit 15000
int temp=0,tempold=1;
int b1=0,b2=0,b3=0,b4=0,b5=0;
int bs1=0,bs2=0,bs3=0,bs4=0,bs5=0;
int bc1=0,bc2=0,bc3=0,bc4=0,bc5=0;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
 // set up the LCD's number of columns and rows:
 lcd.begin(16, 2);
 // Print a message to the LCD.
 lcd.print("hello, world!");
}
void loop() {
 // set the cursor to column 0, line 1
 // (note: line 1 is the second row, since counting begins with 0):
b1 = digitalRead(button_1);
 b2 = digitalRead(button_2);
 b3 = digitalRead(button_3);
 b4 = digitalRead(button_4);
 b5 = digitalRead(button_5);
//////////// Button 1 ///////////////
 if ((b1==1)&&(bs1==0))
 {
 temp = 0; bs1=1; bc1=0;
 }
 if ((b1==1)&&(bs1==1))
 {
 bc1++;
 if (bc1>hold_limit)
 {
 bs1=0; bc1=0;
 }
 }
 if ((b1==0)&&(bs1==1))
 {
 bs1=0;
 }
//////////// Button 2 ///////////////
 if ((b2==1)&&(bs2==0))
 {
 temp--; bs2=1; bc2=0;
 }
 if ((b2==1)&&(bs2==1))
 {
 bc2++;
 if (bc2>hold_limit)
 {
 bs2=0; bc2=0;
 }
 }
 if ((b2==0)&&(bs2==1))
 {
 bs2=0;
 }
//////////// Button 3 ///////////////
 if ((b3==1)&&(bs3==0))
 {
 temp++; bs3=1; bc3=0;
 }
 if ((b3==1)&&(bs3==1))
 {
 bc3++;
 if (bc3>hold_limit)
 {
 bs3=0; bc3=0;
 }
 }
 if ((b3==0)&&(bs3==1))
 {
 bs3=0;
 }
//////////// Button 4 ///////////////
 if ((b4==1)&&(bs4==0))
 {
 temp-=10; bs4=1; bc4=0;
 }
 if ((b4==1)&&(bs4==1))
 {
 bc4++;
 if (bc4>hold_limit)
 {
 bs4=0; bc4=0;
 }
 }
 if ((b4==0)&&(bs4==1))
 {
 bs4=0;
 }
//////////// Button 5 ///////////////
 if ((b5==1)&&(bs5==0))
 {
 temp+=10; bs5=1; bc5=0;
 }
 if ((b5==1)&&(bs5==1))
 {
 bc5++;
 if (bc5>hold_limit)
 {
 bs5=0; bc5=0;
 }
 }
 if ((b5==0)&&(bs5==1))
 {
 bs5=0;
 }
/////////////////////////////////////
 if (temp!=tempold)
 {
 lcd.setCursor(0, 1); lcd.print(" ");
 lcd.setCursor(0, 1); lcd.print(temp);
 tempold=temp;
 }
}